基本数据类型的成员变量存在JVM的哪块内存区域里?

class{
	private int i;
}

如上代码,基本数据类型并不都是存放在虚拟机栈中,在《深入理解JVM》中

  1. 方法内定义的基本数据类型放在栈桢中,栈里面的数据是线程私有的,不共享。
  2. 方法外定义的全局变量,存放在java的堆中
    java虚拟机是线程私有的,生命周期跟线程是相同的,每个方法调用的时候都会创建一个栈桢用于存储局部变量表,操作数栈,动态链接,方法出口信息等。
    每个方法的调用的过程,代表着一个栈桢在虚拟机栈中入栈到出栈的过程。当进入到一个方法的时候栈中需要分配多大的内存都是完全确定的。方法运行时不会改变局部变量表的大小。
    事实上,如上面的变量i,它不是静态变量,不独立于类的实例存在,而该类实例化后放在堆中,当然也包含它的属性i。
class{
	public void test(){
		int j = 0 ;//1
		int[] s = new int[10]; //2
	}
}

1.上述第一行代码在局部变量表中创建了两个对象:引用 j 和 0。这两个对象都是线程私有的。
2.上述第二行代码定义了两个对象,一个是s引用,放在局部变量中,一个是长度为10 的数组方法堆中,这个数组只能通过s来访问。方法结束后出栈,s被销毁,随后根据java的根搜索法,判断数组不可达,就将他销毁。

1. Java的八大基本数据类型包括:byte、short、int、long、float、double、boolean、char。 2. final是Java中的修饰符,可以用来修饰类、方法和变量,表示“最终的”,被修饰的对象不能被修改或继承;finally是Java中的关键字,用于定义在try-catch语句块中必须执行的代码块;finalize是Object类中的一个方法,用于在垃圾回收器回收对象之前执行一些清理操作。 3. ArrayList和LinkedList都是Java集合框架中的List接口的实现类,区别在于底层数据结构不同。ArrayList使用数组实现,支持快速随机访问,但在插入和删除元素时需要移动其他元素;而LinkedList使用链表实现,支持快速插入和删除元素,但在访问元素时需要遍历整个链表。 4. Java的异常分为可检查异常(checked exception)和运行时异常(runtime exception)两种。可检查异常必须在代码中显式地处理或声明抛出,否则编译不通过;运行时异常不需要显式地处理或声明抛出,可以在运行时由虚拟机自动抛出。另外还有错误(error)类型的异常,表示JVM或系统出现了无法恢复的严重问题。 5. Spring Boot是针对Spring框架的一种快速开发框架,具有以下优点:自动配置、快速开发、简化项目配置、集成各种优秀的开源框架、提供丰富的插件和工具等。Spring Boot可以帮助开发者快速搭建基于Spring的Web应用程序,并提供优异的性能和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值